#ifndef OBSERVABLE_H
#define OBSERVABLE_H

#include <QSharedPointer>
#include "Observer_I.h"

using namespace mvc;

template <class T>class Observable_I
    {
        typedef QSharedPointer<Observer_I<T> > ObserverPtr;
    public:

        virtual ~Observable_I(){}
        virtual void addObserver(ObserverPtr &) = 0;
        virtual void removeObserver() = 0;
        virtual void notifyObserver(T before, T after) = 0;
    };

#endif // OBSERVABLE_H
